/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modele;

import Modele.Droit.RBAC.IObjet;
import java.io.IOException;
import java.io.StringReader;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.UUID;
import javax.xml.parsers.ParserConfigurationException;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.xml.sax.SAXException;

/**
 *
 * @author Fardjana
 */
public class Sujet implements IObjet {

    protected UUID mIdSujet;
    protected String mTitre;
    protected String mUE;
    protected int mNumeroTD;
    protected String mAuteur;
    protected Date mDateCreation;

    /* Constructeurs */
    public Sujet(String pSujetXML) throws ParserConfigurationException, SAXException, IOException, JDOMException {
        mTitre = "";
        mUE = "";
        mIdSujet = UUID.randomUUID();
        mAuteur = "";
        buildSujetFromXml(pSujetXML);
        mDateCreation = new Date();
    }
    
    private void buildSujetFromXml(String pSujetXML) throws ParserConfigurationException, SAXException, IOException, JDOMException
    {
        org.jdom.Document vXML = getXmlDocument(pSujetXML);
        org.jdom.Element vRacine = vXML.getRootElement();
        
        List vListeExercice = vRacine.getChildren("exercice");
        Iterator vIterEx = vListeExercice.iterator();
        
        org.jdom.Element vUe = vRacine.getChild("ue");
        org.jdom.Element vTitre = vRacine.getChild("titre");
        org.jdom.Element vNumeroTD = vRacine.getChild("numeroTD");
        
        List vListeAuteur = vRacine.getChildren("auteur");
        Iterator vIterAut = vListeAuteur.iterator();
        while(vIterAut.hasNext())
        {
            org.jdom.Element vAuteurCourant = (org.jdom.Element)vIterAut.next();
            mAuteur += "<auteur nom=\""+vAuteurCourant.getAttributeValue("nom")+"\" prenom=\""+vAuteurCourant.getAttributeValue("prenom")+"\"/>";          
        }
        
        mUE = vUe.getValue();
        mTitre = vTitre.getValue();
        mNumeroTD = Integer.parseInt(vNumeroTD.getValue());
    }
    
    public UUID getId() {
        return mIdSujet;
    }

    public String getTitre() {
        return mTitre;
    }

    public String getUe() {
        return mUE;
    }

    public void setTitre(String titre) {
        this.mTitre = titre;
    }
    
    private org.jdom.Document getXmlDocument(String pSujetXml) throws ParserConfigurationException, SAXException, IOException, JDOMException
    {
        SAXBuilder builder = new SAXBuilder(); 
        org.jdom.Document document = builder.build(new StringReader(pSujetXml));
        return document;
    }
}

